// src/main/java/com/yin/waimai/model/DeliveryPerson.java
package com.yin.waimai.model;

import com.yin.waimai.enums.DeliveryPersonStatus;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint; // 引入 GeoJsonPoint
import org.springframework.data.mongodb.core.index.GeoSpatialIndexType; // 引入地理空间索引类型
import org.springframework.data.mongodb.core.index.GeoSpatialIndexed; // 引入地理空间索引注解
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;


/**
 * 配送员信息 (MongoDB Document)
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "delivery_persons")
public class DeliveryPerson {

    @Id
    private String id;

    @Field("name")
    private String name;

    @Indexed(unique = true) // 电话号码唯一且需要索引
    @Field("phone")
    private String phone;

    // 使用 GeoJsonPoint 存储经纬度，用于地图展示和附近查询
    // 需要添加地理空间索引才能高效查询
    @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) // 创建 2dsphere 索引
    @Field("current_location")
    private GeoJsonPoint currentLocation; // [经度, 纬度]

    @Indexed // 按状态查询，例如查找空闲配送员
    @Field("status")
    private DeliveryPersonStatus status;

    // 可以添加其他信息，如所属站点、车辆信息、评分等
}